package com.design.command;

/**
 * @author leali
 * @title: ConcreteCommand
 * @projectName design
 * @description: 具体命令类
 * @date 2022/1/3 17:15
 */
public class ConcreteCommand extends AbstractCommand {
    private final Adder adder = new Adder();
    private int value;

    /**
     * 实现抽象命令类中声明的execute()方法，调用加法类的加法操作
     *
     * @param value v
     * @return result
     */
    @Override
    public int execute(int value) {
        this.value = value;
        return adder.add(value);
    }

    /**
     * 实现抽象命令类中声明的undo()方法，通过加一个相反数来实现加法的逆向操作
     * @return res
     */
    @Override
    public int undo() {
        return adder.add(-value);
    }
}
